Apparatus and method for efficient collaboration and change management of a non-linear editing process

ABSTRACT

A method of managing change to a non-linear editing process is described. The method accesses a stored reference edit decision list; generates a binary search tree using the reference edit decision list; flattens the binary search tree to generate a linked list that contains linked list data; and generates text-based reference linked list data from the linked list data.

BACKGROUND OF THE INVENTION

In the arts of preparing content, and in particular editing a stream ofmedia content during preparation for distribution to content consumers,content editors may use a non-linear editor (NLE) to make cut decisionson an audio and video content timeline. A non-linear editor isspecialized software executed on a computing system (computer) thatallows generation of the content timeline using a pointer-based systemthat identifies the memory storage location of previously generated andstored digitized video and audio content.

During production, the video content is filmed and the audio content isrecorded. Typically, multiple scenes are acquired, digitized and storedusing one or more cameras and microphones. The content that has beenacquired, digitized and stored for a particular scene are referred toherein as content clips (video clip or audio clip). The content clipsare stored in a memory at a known location. Often, the location inmemory is identified by a file name that has been specified for each ofthe stored content clips. Additionally, each digitized sample of thestored content clips are identified by a time code (interchangeablyreferred to herein as a time stamp) or suitable identifier thatidentifies the content clip location within a scene.

During the post production process, using the non-linear editor,selected portions of the content clips are sequentially arranged togenerate the media content. In practice, the non-linear editor isconfigured to generate an edit decision list (EDL). The edit decisionlist defines the content timeline of the media content, from the startof the media content to the end of the media content.

During the editing process, the content editor (the person operating thenon-linear editor computer/program) will identify a particular contentclip of interest, such as a scene or part of the scene, that will beused to generate a portion of the media content. The content editor willalso identify a location along the content timeline where the contentclip will be presented in the stream of the finalized media contentevent.

With a non-linear editor, the content editor specifies the memorylocation of the stored digitized content clip to the non-linear editorand specifies the point where the content clip is to go in the contenttimeline. For example, the content editor may specify the file namegiven to the content clip and a time code of the first frame of thatcontent clip. The non-linear editor software then adds the file name andtime code of the content clip into the edit decision list at thespecified point in the content timeline. The content editor'sspecification may also include a duration of the content clip.

Once the edit decision list has been completed for the entire contenttimeline, the media content event can be generated. The first entry inthe edit decision list identifies the beginning of the media content.Based on the specified file name and time code, the first content clipis retrieved by the non-linear editor and is stored as the first part ofthe media content event. The next entry identifies the second contentclip, which is then retrieved and stored into the media content as thesecond part of the media content event. The process of retrieving andstoring the sequence of content clips continues until the end of thecontent timeline. Once the last content clip has been retrieved andstored into the media content event, generation of the media contentevent has been completed.

The completed media content event is stored as media content stream. Themedia content stream typically comprises a synchronized stream of videocontent, audio content, and other information of interest such as closedstream captioning information and/or information describing attributespertaining to the media content. The video portion of the media content,when decoded and presented on a display, presents a series ofsequentially presented still images which are each presented for somepredefined duration. By presenting each image for a short duration, thesequentially presentation of the series of images results in theperception by a viewer of a motion picture (interchangeably referred toherein as a video). The corresponding audio portion of the media contentis presented in synchronism with presentation of the video such that theuser hears sounds, such as actor dialogue and/or music, while they areviewing the video portion of the media content.

An advantage of using a non-linear editor during post production is thatduring editing, any of the content clips can be easily deleted, contentclips can be moved to another location in the content timeline, and/orother content clips can be added into the content timeline by the editoroperating the non-linear editor program. Such changes are made on a realtime basis by revising the edit decision list.

If multiple parties (editors) are concurrently working on a shared editdecision list, collaboration among the editors can be achieved via alock workflow process. In the lock workflow process, the edit decisionlist is locked for editing by a designated single editor who is allowedto change the edit decision list. Other editors are prevented frommodifying the edit decision list. Once the edit decision list has beenunlocked, the rest of the collaboration team of editors can merge theirchanges into the unlocked edit decision list.

The lock workflow process has several problems. For example, locking theedit decision list is arbitrary. If the edit decision list has beenlocked by the designated editor, who may be unreachable at sometimes, anartificial workflow impediment is created because the other editorscannot access the locked edit decision list. Locked edit decision listscreate a workflow bottleneck because the various editors must take turnsmodifying the edit decision list. That is, the various editors cannotblend their edit decision list changes until the locked edit decisionlist is unlocked.

The non-linear workflow process still has several problems. For example,during a bare workflow process, if two or more editors are working onthe same portion of the edit decision list, their changes may collidewith each other. For example, a first edit change may be made to aparticular portion of the edit decision list. Then, a later edit changemay be made to the same part of the edit decision list (by simply overwriting the first edit change). Accordingly, previous edit changes maybe lost.

Accordingly, there is a need in the arts to provide an improvedapparatus and method to enable concurrent non-linear editing of contentby a plurality of content editors.

SUMMARY

A method of managing change to a non-linear editing process isdescribed. The method accesses a stored reference edit decision list;generates a binary search tree using the reference edit decision list;flattens the binary search tree to generate a linked list that containslinked list data; and generates text-based reference linked list datafrom the linked list data.

BRIEF DESCRIPTION OF THE DRAWINGS

The components in the drawings are not necessarily to scale relative toeach other. Like reference numerals designate corresponding partsthroughout the several views.

FIG. 1 is a block diagram of an embodiment of an example contenttimeline editor system.

FIG. 2 conceptually illustrates an example content timeline.

FIG. 3 conceptually illustrates an example plurality of samples of asample stream.

FIG. 4 conceptually illustrates an example search binary tree.

FIG. 5 conceptually illustrates an example linked list that is generatedfrom the binary search tree.

FIG. 6 conceptually illustrates an example plurality of computer filesgenerated from linked list data.

DETAILED DESCRIPTION

FIG. 1 is a block diagram of an embodiment of an example contenttimeline editor system 100. The content timeline editor system 100 is acomponent of, or works cooperatively with, one or more non-lineareditors 102. In an example embodiment, the content timeline editorsystem 100 maintains a reference edit decision list (RDEL) that isaccessible in real time to a plurality of editors using their respectivenon-linear editor 102. One skilled in the art appreciates that thenon-linear editor is software executing on a computer 102. Accordingly,the terms non-linear editor 102 and computer 102 may be interchangeablyused within the context of this disclosure.

In the various embodiments, each content editor is able to access thereference edit decision list to ascertain the current state of the postproduction editing process. For example, the content editor may retrieveand save the most current reference edit decision list onto the memoryof their computer 102 or to a memory medium (memory) that iscommunicatively coupled to their computer 102. Each content editor may,depending upon their current task and objectives, make changes to thelocal edit decision list stored on their computer 102. When the contenteditor is satisfied with their current work, the content editor may thensend the revised edit decision list information with their changes thatthey have made to the locally stored edit decision list from theircomputer 102 to the content timeline editor system 100. The new editdecision list information may be communicated as an updated editdecision list. Alternatively, or additionally, the portion of the localupdated edit decision list that the editor was working on may becommunicated to the content timeline editor system 100. In otherembodiments, changes to the local edit decision list may be communicatedfrom the non-linear editor 102 to the content timeline editor system 100in different manners and in different formats.

Alternatively, or additionally, a non-linear editor 102 that has beenprovisioned with the content timeline editor system 100 can generate anupdated binary search tree, described in greater detail herein, based onthe updated edit decision list. Then, the non-linear editor 102 cangenerate additionally or alternatively generate an updated linked listwith updated linked list data. The non-linear editor 102 canadditionally or alternatively then generate text-based updated referencelinked list data that is communicated to the managing content timelineeditor system 100 as an update.

Once the updated edit decision list information is received at thecontent timeline editor system 100, the most current reference editdecision list is optionally accessed for updating with the newlyreceived updated edit decision list information. The updated referenceedit decision list is then optionally re-stored by the content timelineeditor system 100.

In some embodiments, supplemental information is stored in the referenceedit decision list and/or may be associated with the reference editdecision list. For example, the date and time that the most currentreference edit decision list was generated may be included in thesupplemental information. As another non-limiting example ofsupplemental information, the name of the content editor and/or thecontent timeline of their changes may be stored so that other contenteditors may learn who made what changes, and what portion of the editdecision list was changed by the identified content editor. Any suitableinformation of interest may be stored as supplemental information.

During the update process, the content timeline editor system 100 checksfor data collisions. A data collision occurs when two different contenteditors, using their own non-linear editor 102, make changes to the sameportion of the edit decision list. As another example, collisions mayhappen when a content editor submits a change, but the content editorwas working from an old out-of-date version of the edit decision list.If their changes were made inside the timecode range that the mostrecent changes were made, a collision has occurred.

Further, the location of a collision within the edit decision list canbe identified very precisely. The nodes of each binary search tree areassociated with a particular time in the content time line of the editdecision list. In response to identifying the collision, embodiments ofthe content timeline editor system 100 generate a collision report thatindicates the detection of the collision, wherein the collision reportindicates a precise time of the collision in the time line, andoptionally provide the colliding data to the content editor

Content editors can address collisions by choosing to override withtheir changes, keep the most recent change, or rollback to the previouschange. This workflow allows any number of content editors using acontent timeline editor system 100 embodiment to edit the same contenttimeline without locking the content timeline. That is, contenttimelines can be branched, modified and merged by a plurality of contenteditors who are concurrently editing the edit decision list using thecontent timeline editor system 100. The entire history of the contenttimeline may be stored so any content editor can go back to a historicalversion of the content timeline. The conflict between the updated editdecision list information must be resolved before a valid currentreference edit decision list can be generated. In some situations, theeditors submitting the changes are notified of the collision.Alternatively, or additionally, a chief editor in charge of the postproduction process may be notified of the collision. Once the collisionhas been resolved by the various content editors, a new reference editdecision list can be generated by the content timeline editor system100.

One skilled in the art appreciates that the task of managing a contenttimeline defined by an edit decision list is exceedingly complex anddifficult. In particular, the digital data sampling rates for video dataand audio data are very high. For example, the forty eight kilo hertz(48 k Hz). Accordingly, there is an incredibly large amount of video andaudio data that must be tracked with a high degree of precision using asample-level precision edit decision list which makes the task complexand difficult for the content editors. Even one second of a mediacontent event may have hundreds of thousands of pieces of data.

Embodiments of the content timeline editor system 100 manage the processof tracking the video and audio data identified in the reference editdecision list with the requisite degree of precision using a novelapproach of representing time line information within the reference editdecision list. The novel approach is to represent information of an editdecision list using a binary search tree. The binary search tree isadvantageous because redundant data is consolidated into a singleaddress, which can be represented as a node in the binary search tree.The binary search tree information is flattened into a linked list. Oncethe binary search tree (with the edit decision list information) isflattened into the linked list, the linked list data is stored by thecontent timeline editor system 100 using a text-based source codemanagement (SCM) system. That is, the edit decision list is convertedinto the text-based linked list data. While SCM systems aretraditionally used to manage computer program source code, in thecontext of this disclosure, the SCM system used by the content timelineeditor system 100 is used to store the linked list data corresponding tothe latest edit decision list versions. Any SCM system now known orlater developed is intended to be within the scope of this disclosureand to be protected by the accompanying claims.

Embodiments of the content timeline editor system 100 can quicklycompare the text-based linked list data of the reference edit decisionlist with the text-based linked list data of the received updated editdecision list information. Based on the comparison of the text-basedreference linked list data and the text-based updated linked list data,potential collisions can be readily identified. That is, a collision canbe identified when one of the filled nodes of the text-based referencelinked list data corresponds to a filled noted of the text-based updatelinked list data.

Further, the location of the collision within the edit decision list canbe identified very precisely. Here, if the updated linked list dataindicates that the editorial change to the edit decision list is made ata null location in the binary search tree of the linked list data, thenthe content timeline editor system 100 determines that there will not bea data collision when the current reference edit decision list isupdated using the updated edit decision list information. Alternatively,if the comparison between the text-based reference linked list data andthe text-based updated linked list data indicates that one of more ofthe nodes of the binary search tree is already occupied with data thatwould otherwise be changed in a new updated edit decision list, then thecontent timeline editor system 100 precisely determines the location ofthe potential data collision.

Here, one skilled in the art, after reading and contemplating thedisclosure of this specification, will realize that the process ofcomparing the text-based reference linked list data with the text-basedupdated linked list data is computationally more efficient thancomparing a reference edit decision list with an updated edit decisionlist (or even the updated edit decision list information).

Furthermore, the SCM system enables call back of previous versions ormerge collisions. The SCM system process can also be reversed togenerate an edit decision list that can be fed back into the non-lineareditor 102.

The disclosed content timeline editor system 100 will become betterunderstood through review of the following detailed description inconjunction with the figures. The detailed description and figuresprovide merely examples of the various inventions described herein.Those skilled in the art will understand that the disclosed examples maybe varied, modified, and altered without departing from the scope of theinventions described herein. Many variations are contemplated fordifferent applications and design considerations; however, for the sakeof brevity, each and every contemplated variation is not individuallydescribed in the following detailed description.

Throughout the following detailed description, examples of variouscontent timeline editor systems 100 are provided. Related features inthe examples may be identical, similar, or dissimilar in differentexamples. For the sake of brevity, related features will not beredundantly explained in each example. Instead, the use of relatedfeature names will cue the reader that the feature with a relatedfeature name may be similar to the related feature in an exampleexplained previously. Features specific to a given example will bedescribed in that particular example. The reader should understand thata given feature need not be the same or similar to the specificportrayal of a related feature in any given figure or example.

The following definitions apply herein, unless otherwise indicated.

“Substantially” means to be more-or-less conforming to the particulardimension, range, shape, concept, or other aspect modified by the term,such that a feature or component need not conform exactly. For example,a “substantially cylindrical” object means that the object resembles acylinder, but may have one or more deviations from a true cylinder.

“Comprising,” “including,” and “having” (and conjugations thereof) areused interchangeably to mean including but not necessarily limited to,and are open-ended terms not intended to exclude additional, elements ormethod steps not expressly recited.

Terms such as “first”, “second”, and “third” are used to distinguish oridentify various members of a group, or the like, and are not intendedto denote a serial, chronological, or numerical limitation.

“Coupled” means connected, either permanently or releasably, whetherdirectly or indirectly through intervening components. “Communicativelycoupled” means connected electronically to other devices, whetherdirectly or indirectly through intervening components, in a manner thatfacilitates electronic communication of information and/or data betweendevices.

Returning to FIG. 1, computer system 104 comprises a computer memory(“memory” or memory medium) 106, an optional display 108, one or moreCentral Processing Units (“CPU”) 110, optional Input/Output devices 112(e.g., keyboard, mouse, CRT or LCD display, etc.), othercomputer-readable media 114, and one or more network connections 116.The edit decision list engine 118, the binary search tree engine 120,the tree flattening engine 122, the collision monitoring engine 124, theprocessor 126, the video and audio content data 128, and the referenceedit decision list (REDL) and linked list data 130 are shown residing inmemory 102. In other embodiments, some portion of the contents and/orsome of (or all of) the components of the interactive video introductionsystem 100 may be stored on and/or transmitted over the other localand/or remote computer-readable media. In some embodiments, the editdecision list engine 118, the binary search tree engine 120, the treeflattening engine 122, and/or the collision monitoring engine 124 may beintegrated with each other and/or with other logic.

Note that one or more general purpose virtual or physical computingsystems suitably instructed or a special purpose computing system 104may be used to implement a content timeline editor system 100. Further,the content timeline editor system 100 may be implemented in software,hardware, firmware, or in some combination to achieve the capabilitiesdescribed herein. Note that one or more general purpose or specialpurpose computing systems/devices communicatively coupled together maybe used to implement the described techniques. However, just because itis possible to implement the content timeline editor system 100 on ageneral purpose computing system does not mean that the techniquesthemselves or the operations required to implement the techniques areconventional or well known.

The content timeline editor system 100 may comprise one or morecommunicatively coupled server and/or client computing systems, and/ormay span distributed locations. In addition, each block shown mayrepresent one or more such blocks as appropriate to a specificembodiment and/or may be combined with other blocks. Moreover, thevarious blocks of the content timeline editor system 100 may physicallyreside on one or more machines, which use standard (e.g., TCP/IP) orproprietary interprocess communication mechanisms to communicate witheach other.

The video and audio content clips are stored in the REDL and linked listdata 130 portion of memory 106. The location of each content clip isknown and is preferably identified by a unique identifying name. Thecontent clips may be optionally associated with other supplementalinformation, such as, but not limited to, an identifier of the camera ormicrophone. Data within the content clips are further identified by atime code or the like. The REDL and linked list data 130 stores thegenerated current reference edit decision list, optionally previouslygenerated reference edit decision lists, and the associated linked listdata. In some embodiments, the reference edit decision lists and/orlinked list data may be stored locally in the memory 106. Alternatively,or additionally, the information may be stored in other datarepositories 132 that may be local and/or that may be remote from thecomputer system 104.

The components of the content timeline editor system 100 preferablyexecute on one or more CPUs 110 executing the processor 126 to managethe generation and use of the edit decision lists, as described herein.Other code or programs 134 and potentially other data repositories, suchas data repository 132, also reside in the memory 106, and preferablyexecute on one or more CPUs 110. Of note, one or more of the componentsin FIG. 1 may not be present in any specific implementation. Forexample, some embodiments embedded in other software may not providemeans for user input or display.

In an example embodiment, components/modules of the content timelineeditor system 100 are implemented using standard programming techniques.For example, the content timeline editor system 100 may be implementedas a “native” executable running on the CPU 110, along with one or morestatic or dynamic libraries. In other embodiments, the interactive videointroduction system 100 may be implemented as instructions processed bya virtual machine. In general, a range of programming languages known inthe art may be employed for implementing such example embodiments of theinteractive video introduction system 100, including representativeimplementations of various programming language paradigms, including butnot limited to, object-oriented (e.g., Java, C++, C#, Visual Basic.NET,Smalltalk, and the like), functional (e.g., ML, Lisp, Scheme, and thelike), procedural (e.g., C, Pascal, Ada, Modula, and the like),scripting (e.g., Perl, Ruby, Python, JavaScript, VBScript, and thelike), and declarative (e.g., SQL, Prolog, and the like).

The embodiments of the content timeline editor system 100 describedherein may also use well-known or proprietary, synchronous orasynchronous client-server computing techniques. Also, the variouscomponents may be implemented using more monolithic programmingtechniques, for example, as an executable running on a single CPUcomputer system, or alternatively decomposed using a variety ofstructuring techniques known in the art, including but not limited to,multiprogramming, multithreading, client-server, or peer-to-peer,running on one or more computer systems each having one or more CPUs.Some embodiments may execute concurrently and asynchronously andcommunicate using message passing techniques. Equivalent synchronousembodiments are also supported.

Also, the example content timeline editor system 100 may be implementedin a distributed environment comprising multiple, even heterogeneous,computer systems and networks. Different configurations and locations ofprograms and data are contemplated for use with techniques of describedherein. In addition, the interactive video introduction system 100 maybe physical or virtual computing systems and may reside on the samephysical system. Also, one or more of the modules may themselves bedistributed, pooled or otherwise grouped, such as for load balancing,reliability or security reasons. A variety of distributed computingtechniques are appropriate for implementing the components of theillustrated embodiments in a distributed manner including but notlimited to TCP/IP sockets, RPC, RMI, HTTP, Web Services (XML-RPC,JAX-RPC, SOAP, etc.) and the like. Other variations are possible. Also,other functionality could be provided by each component/module, orexisting functionality could be distributed amongst thecomponents/modules in different ways, yet still achieve the functions ofan interactive video introduction system 100.

Furthermore, in some embodiments, some or all of the components of thecontent timeline editor system 100 may be implemented or provided inother manners, such as at least partially in firmware and/or hardware,including, but not limited to one or more application-specificintegrated circuits (ASICs), standard integrated circuits, controllersexecuting appropriate instructions, and including microcontrollersand/or embedded controllers, field-programmable gate arrays (FPGAs),complex programmable logic devices (CPLDs), and the like that arecommunicatively coupled and/or controllably coupled with each other.Some or all of the system components and/or data structures may also bestored as contents (e.g., as executable or other machine-readablesoftware instructions or structured data) on a computer-readable medium(e.g., a hard disk; memory; network; other computer-readable medium; orother portable media article to be read by an appropriate drive or viaan appropriate connection, such as a DVD or flash memory device) toenable the computer-readable medium to execute or otherwise use orprovide the contents to perform at least some of the describedtechniques. Some or all of the components and/or data structures may bestored on tangible, non-transitory storage mediums. Some or all of thesystem components and data structures may also be stored as data signals(e.g., by being encoded as part of a carrier wave or included as part ofan analog or digital propagated signal) on a variety ofcomputer-readable transmission mediums, which are then transmitted,including across wireless-based and wired/cable-based mediums, and maytake a variety of forms (e.g., as part of a single or multiplexed analogsignal, or as multiple discrete digital packets or frames). Accordingly,embodiments of the interactive video introduction system 100 may bepracticed with other computer system configurations.

In practice, the content editor who is operating the computer system104, executing the edit decision list engine 118, may operate thecontent timeline editor system 100 to retrieve and then present on thedisplay 108 a portion of, or all of, the media content in accordancewith the current reference edit decision list, earlier generatedreference edit decision lists, and/or updated edit decision listinformation provided by a remotely located non-linear editor 102. Afterreview of edits to the reference edit decision list provided by one ormore of the non-linear editors 102, the content editor may conclude thatthe proposed new edits are satisfactory. Assuming any identifiedcollisions have been resolved, the content editor may operate thecomputer 104 to generate a new reference edit decision list which isthen stored into the REDL and linked list data 130 or into anothersuitable memory medium. The content editor may control operation of thecomputer 104 using the various input/output (I/O) devices 112.

The content timeline editor system 100, the non-linear editors 102, andother client computing systems 136 are communicatively coupled togethervia a communication network 138. The communication network 138 isillustrated as a generic communication system. In one embodiment, thecommunication network 138 comprises the Internet. Accordingly, thecomputer 104, the non-linear editors 102, and/or client computingsystems 136 have a suitable modem or Internet connection device,generically represented as the network connections 116. Alternatively,the communication network 138 may be a telephony system, a radiofrequency (RF) wireless system, a microwave communication system, afiber optics system, an intranet system, a local access network (LAN)system, an Ethernet system, a cable system, a radio frequency system, acellular system, an infrared system, a satellite system, or a hybridsystem comprised of multiple types of communication media. Additionally,embodiments of the content timeline editor system 100 may be implementedon other types of communication technologies, such as but not limitedto, digital subscriber loop (DSL), X.25, Internet Protocol (IP),Ethernet, Integrated Services Digital Network (ISDN) and asynchronoustransfer mode (ATM). Also, embodiments of the content timeline editorsystem 100 may be employed on combination systems having a plurality ofsegments which employ different formats for each segment employingdifferent technologies on each segment.

The content timeline editor system 100 divides a working edit decisionlist into the following parts: a sample, an event, and a sample stream.FIG. 2 conceptually illustrates an example edit decision list 202(interchangeably referred to herein as a time line). The timeline 202includes at least one track 204. For example, track 204 may be a videotrack. Typically, the timeline 202 comprises a plurality of tracks 204,such as video and audio tracks. Within a track are a plurality of clips206. Each clip 206 contains content information over a time span in thetimeline 202. Clips 206 may be video clips or audio clips. One skilledin the art appreciates that the completed media content event comprisesa continuous sequence of time ordered video clips and audio clips thatpresents a thematic story line.

FIG. 3 conceptually illustrates a plurality of samples 302 in an examplesample stream 304. Some samples 302 are empty. Other samples 302 arefilled with edit decision list information (pointer information thatidentifies a selected event that is a portion of stored content, such asportions of video clips and/or audio clips) for a single track.

A sample 202 spans a discrete moment in time for a defined period oftime (duration). Each sample is associated with the discrete time in thecontent timeline 202 (FIG. 2). The data of the reference edit decisionlist (and any other edit decision list) are also associated with a timein the content time line. When data in the reference edit decision listcorresponds to a time of a sample, the pointer information from the editdecision list is copied into that sample. It is the smallest unit in thecontent timeline 202.

Each sample 302 points to a single event that is associated with thatsample. An event is an immutable set of attributes. A sample stream 304is a sequence of samples, ordered chronologically editorial contenttimeline assets are broken down into unique events. The event durationis expressed by a sequence of a plurality of samples 302 (eachassociated with same content clip), which are inserted into a samplestream 304. If a content timeline 202 has multiple tracks, a distinctsample stream 304 is created for each track.

The content timeline editor system 100 divides the entire contenttimeline 202 into the smallest unit of time (duration), referred hereinas the sample 302. Edit decision list changes, collisions, branches andmerges all operate on the sample level. However, sample-level precisionis not trivial. The internal time base (or sample rate) for modernnon-linear editor projects is often 48 kilohertz (48,000 samples asecond) or higher.

Simply filling a sample stream 304 with 48,000 samples 302 per second isimpracticable. To solve this problem, the data stored in a sample is apointer or the like, interchangeably referred to herein as pointerinformation, that indicates location of the stored video data or audiodata in memory. The stored pointer also includes an associated timecode. For example, the video data for each video frame in a video clipwill have an associated time code, typically corresponding to a timethat the frame was acquired by a camera or other image capture device.In some embodiments, the video or audio clip memory location may beidentifiable by a file name that has been specified by the contenteditor. The non-linear editor 102 is the device that stores the pointerinformation or data into a particular sample based on a specificationprovided by the content editor.

FIG. 4 conceptually illustrates an example binary search tree. Thecontent timeline editor system 100, executing the binary search treeengine 120, processes the current reference edit decision list into abinary search tree 402 to mark relatively large sections of the samplestream 302 (sequence of samples) as part of an event.

Each sample corresponds to a lowest node in the binary search tree 202.A node is empty (null) if no content data (video and/or audio data) hasbeen specified for that place in the content timeline. If content datahas been specified by a content editor using their non-linear editor102, then data is complete for that node. Higher nodes in the binarysearch tree will be complete if the span of time associated with thatnode has content data. In the simplified conceptual example illustratedin FIG. 4, the nodes 1, 2-3, and 4-7 are all complete. That is, for theperiods of time in the content timeline associated with the nodes 1,2-3, and 4-7, the content editor has specified the content clips, orportions thereof, that are to be used in the media content stream. Otherportions of the content time line, in accordance with the reference editdecision list, do not have specified content.

FIG. 5 conceptually illustrates an example linked list data 502(interchangeably referred to as an array 502) that is generated byflattening the binary search tree 402. Here, the content timeline editorsystem 100, executing the binary search tree flattening engine 122,flattens the binary search tree that has been generated using thereference edit decision list to generate the linked list data 502. Anysuitable binary search tree flattening algorithm now known or laterdeveloped is intended to be included within the scope of this disclosureand to be protected by the accompanying claims.

FIG. 6 conceptually illustrates an example plurality of text-basedcomputer files 602 (interchangeably referred to herein as text-basedreference linked list data) generated from linked list data 502 by thecontent timeline editor system 100. The linked list data 502 isconverted into a text-based list of small computer files 602 by theexecuting the binary search tree flattening engine 122. That is, thetext-based reference linked list data 602 is generated from the linkedlist data 502.

Once the edit decision list 202 has been reduced into a series of smallcomputer files 602, they can be applied to any file/text-based versioncontrol system by the content timeline editor system 100 and stored inthe REDL and linked list data 130 or another suitable memory medium.These text-based files 602 may be used to quickly detect changes,versioning, branching, merging, and managing merge conflicts usingembodiments of the content timeline editor system 100.

Further, the edit decision list change events are content-addressable.Accordingly, the memory address location of the individual events may bederived from the content (attributes) of the text-based files 602. If anattribute changes, the address changes, essentially making a new event,the change to the corresponding file 602 can be detected. In this way,edit decision list change events are immutable.

Embodiments of the content timeline editor system 100 provide severalunexpected advantages to the process of conventional editing of an editdecision list. Embodiments support simultaneous edit decision listedits. Here, an unlimited number of content editors can make concurrentchanges to the same edit decision list at the same time. Any change tothe edit decision list results in a new version of the reference editdecision list maintained by the content timeline editor system 100. Allhistorical versions of edit decision lists are saved and can be quicklyaccessed by any of the content editors. Embodiments of the contenttimeline editor system 100 support unlimited timeline branching andmerging. That is, the edit decision lists can be quickly branched.Changes between branches of a binary search tree 402 can be merged.Embodiments of the content timeline editor system 100 are fast andefficient. Here, timeline versioning and branching can be quickly donewith little computation. Preferably, edit decision list versions arestored as deltas, so only the changed portions of the edit decision listare stored for each version. And, the content timeline editor system 100is application independent. That is, the content timeline information isstored in a way that permits any non-linear editor 102 to understand thereference edit decision list in entirety. Any application can read andmodify the reference edit decision list independently.

It should be emphasized that the above-described embodiments of thecontent timeline editor system 100 are merely possible examples ofimplementations of the invention. Many variations and modifications maybe made to the above-described embodiments. All such modifications andvariations are intended to be included herein within the scope of thisdisclosure and protected by the following claims.

Furthermore, the disclosure above encompasses multiple distinctinventions with independent utility. While each of these inventions hasbeen disclosed in a particular form, the specific embodiments disclosedand illustrated above are not to be considered in a limiting sense asnumerous variations are possible. The subject matter of the inventionsincludes all novel and non-obvious combinations and subcombinations ofthe various elements, features, functions and/or properties disclosedabove and inherent to those skilled in the art pertaining to suchinventions. Where the disclosure or subsequently filed claims recite “a”element, “a first” element, or any such equivalent term, the disclosureor claims should be understood to incorporate one or more such elements,neither requiring nor excluding two or more such elements.

Applicant(s) reserves the right to submit claims directed tocombinations and subcombinations of the disclosed inventions that arebelieved to be novel and non-obvious. Inventions embodied in othercombinations and subcombinations of features, functions, elements and/orproperties may be claimed through amendment of those claims orpresentation of new claims in the present application or in a relatedapplication. Such amended or new claims, whether they are directed tothe same invention or a different invention and whether they aredifferent, broader, narrower, or equal in scope to the original claims,are to be considered within the subject matter of the inventionsdescribed herein.

Therefore, having thus described the invention, at least the followingis claimed:
 1. A method of managing change to a non-linear editingprocess, comprising: accessing a stored reference edit decision listfrom a memory medium, wherein the reference edit decision listcorresponds to a content timeline associated with the accessed referenceedit decision list, wherein the content timeline is defined by achronologically ordered sequence of a plurality of filled samples or aplurality of null samples in a sample stream, wherein each sample spansa discrete duration and is associated with a discrete time in thecontent timeline, wherein a null sample of the plurality of null samplesis empty, and wherein a filled sample of the plurality of filled samplesstores pointer data that identifies a location of an event in the memorymedium; generating a binary search tree using the reference editdecision list, wherein a null node of the binary search tree correspondsto one of the plurality of null samples, and wherein a filled node ofthe binary search tree corresponds to one of the plurality of filledsamples; flattening the binary search tree to generate a linked listthat contains linked list data; and generating text-based referencelinked list data from the linked list data.
 2. The method of claim 1,wherein a predefined plurality of sequential samples define an eventduration for the event.
 3. The method of claim 1, further comprising:storing the text-based reference linked list data in the memory medium.4. The method of claim 3, further comprising: receiving text-basedupdated linked list data from a remotely located non-linear editor;comparing the text-based reference linked list data with the text-basedupdated linked list data; identifying a collision when one of the fillednodes of the text-based updated linked list data corresponds to a fillednode of the text-based reference linked list data; and determining thatno collision has occurred when all filled nodes of the text-basedupdated linked list data correspond to the null nodes of the text-basedreference linked list data.
 5. The method of claim 4, wherein inresponse to identifying the collision, the method further comprising:generating a collision report that indicates the detection of thecollision, wherein the collision report indicates a precise time of thecollision in the time line.
 6. The method of claim 4, furthercomprising: storing the text-based updated linked list data in thememory medium with associated supplemental information that identifiesan attribute of the updated linked list data.
 7. The method of claim 6,wherein the attribute of the supplemental information identifies a timethat the updated linked list data was generated at the non-lineareditor.
 8. The method of claim 6, wherein the attribute of thesupplemental information identifies a name of the content editor whogenerated the updated linked list data.
 9. The method of claim 6,further comprising: generating a new reference edit decision list bycombining the updated edit decision list information into the referenceedit decision list in response to determining that no collision hasoccurred; and storing the new reference edit decision list as a currentreference edit decision list.
 10. The method of claim 9, furthercomprising: generating a new reference binary search tree using the newreference edit decision list, wherein a null node of the new binarysearch tree corresponds to one of the plurality of null samples, andwherein a filled node of the new binary search tree corresponds to oneof the plurality of filled samples; flattening the new binary searchtree to generate a new linked list that contains the updated linked listdata and the reference edit decision list data; generating newtext-based reference linked list data from the new linked list data; andstoring the new text-based reference linked list data in the memorymedium.
 11. The method of claim 10, further comprising: communicatingone of the new updated linked list data or the new text-based referencelinked list data to the non-linear editor.
 12. The method of claim 3,further comprising: receiving updated linked list data from a remotelylocated non-linear editor; generating an updated binary search treeusing the received updated linked list data, wherein a null node of theupdated binary search tree corresponds to one of the plurality of nullsamples, and wherein a filled node of the updated binary search treecorresponds to one of the plurality of filled samples; flattening theupdated binary search tree to generate an updated linked list thatcontains updated linked list data; and generating text-based updatedlinked list data from the updated linked list data.
 13. The method ofclaim 12, further comprising: comparing the text-based reference linkedlist data with the text-based updated linked list data; identifying acollision when one of the filled nodes of the text-based updated linkedlist data corresponds to a filled node of the text-based referencelinked list data; and determining that no collision has occurred whenall filled nodes of the text-based updated linked list data correspondsto the null nodes of the text-based reference linked list data.
 14. Themethod of claim 13, further comprising: generating a collision reportthat indicates the detection of the collision, wherein the collisionreport indicates a precise time of the collision in the time line. 15.The method of claim 12, further comprising: storing the text-basedupdated linked list data in the memory medium with associatedsupplemental information that identifies an attribute of the updatedlinked list data.
 16. The method of claim 15, wherein the attribute ofthe supplemental information identifies a time that the updated linkedlist data was generated at the non-linear editor.
 17. The method ofclaim 15, wherein the attribute of the supplemental informationidentifies a name of the content editor who generated the updated linkedlist data.
 18. The method of claim 15, further comprising: generating anew reference edit decision list by combining the updated edit decisionlist information into the reference edit decision list in response todetermining that no collision has occurred; and storing the newreference edit decision list as a current reference edit decision list.19. The method of claim 18, further comprising: generating a newreference binary search tree using the new reference edit decision list,wherein a null node of the new binary search tree corresponds to one ofthe plurality of null samples, and wherein a filled node of the newbinary search tree corresponds to one of the plurality of filledsamples; flattening the new binary search tree to generate a new linkedlist that contains the updated linked list data and the reference editdecision list data; generating new text-based reference linked list datafrom the new linked list data; and storing the new text-based referencelinked list data in the memory medium.
 20. The method of claim 19,further comprising: communicating one of the new updated linked listdata or the new text-based reference linked list data to the non-lineareditor.